﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MiniSched.Logging {

    public abstract class MiniSchedLog {

        public abstract bool IsDebugEnabled { get; }
        public abstract bool IsInfoEnabled { get; }
        public abstract bool IsWarnEnabled { get; }
        public abstract bool IsErrorEnabled { get; }
        public abstract bool IsFatalEnabled { get; }

        public abstract void Debug(object message, Exception exception);
        public abstract void Info(object message, Exception exception);
        public abstract void Warn(object message, Exception exception);
        public abstract void Error(object message, Exception exception);
        public abstract void Fatal(object message, Exception exception);

        public virtual void Debug(object message) {
            Debug(message, null);
        }

        public virtual void Info(object message) {
            Info(message, null);
        }

        public virtual void Warn(object message) {
            Warn(message, null);
        }

        public virtual void Error(object message) {
            Error(message, null);
        }

        public virtual void Fatal(object message) {
            Fatal(message, null);
        }
    }
}
